package cn.tedu._04mybatis.mapper;

import cn.tedu._04mybatis.pojo.entity.WeiBo;
import cn.tedu._04mybatis.pojo.vo.*;
import org.apache.ibatis.annotations.*;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

@Mapper
public interface WeiBoMapper {
    //1.
//    @Insert("INSERT INTO weibo(content,created,user_id) VALUES (#{content},#{created},#{userId})")
    int insert(WeiBo weiBo);
//2.
//    @Delete("DELETE FROM weibo WHERE id=#{id}")
    int delete(Long id);
    //3.根据微博id修改指定内容
//    @Update("UPDATE weibo SET content=#{content},created=#{created},user_id=#{userId} WHERE id=#{id}")
    int updateWeiBoId(WeiBo weiBo);
    //4.单条数据全字段查询
    //查询指定微博的所有字段的数据
//    @Select("SELECT id,content,created,user_id userID FROM weibo WHERE id=#{id}")
    WeiBo selectWeiBo(Long id);
    //5.多条数据全字段查询
    //查询指定用户发的所有微博信息
//    @Select("SELECT id,content,created,user_id userID FROM weibo WHERE user_id=#{uid}")
    List<WeiBo> selectAllWeiBo(Long uid);
    //6.单条数据分字段查询：查询指定微博的微博内容和发布时间
//    @Select("SELECT content,created FROM weibo WHERE id=#{id}")
    WeiBoVO1 selectWeiboVO1ById(Long id);
    //7.单条数据分字段查询：查询指定用户(用户id)发的所有微博的微博内容和时间
//    @Select("SELECT u.nickname,wb.content,wb.created FROM user u,weibo wb WHERE u.id=wb.user_id AND u.id=#{id}")
    List<WeiBoVO2> selectWeiboVo2ByuserId(Long id);
    //8.动态修改指定微博信息
    int dynamicUpdate(WeiBo weiBo);

    //9.动态删除指定微博信息(集合)
    int dynamicDelete(ArrayList<Long> ids);
    //10.动态删除指定微博信息(数组)
    int dynamicDelete2(Long[] ids);
    //11.统计微博表中的数据条数
    int selectCount();
    /**
     12.

     */
    ResultMapVo1 selectMap1(Long id);

/**
 * 13.多表
 */
    WeiBoVO3 selectMap2(Long id);
    /*
    14.ResultMap多表练习
    获取指定微博的所有评论信息，要求显示微博ID,微博内容，评论的集合List<Comment>
     */
    ResultMapVo3 selectMap3(Long id);

    ResultMapVo4 selectMap4(Long id);
}
